Presence and availability are terms used to describe a present ability of an individual to communicate. Presence is an ability of an individual to communicate in real time, and availability is the willingness of an individual to communicate in real time. In communications, it is advantageous to know whether a potential recipient of a communication message is present and available, i.e., available to receive and respond to the message before initiating the transmission of the message. By making the presence and availability of individual users known before any communication is attempted, a realtime communications environment is facilitated that is more effective and less obtrusive than conventional communication mediums. Clearly, the communication message that is sent to an addressee that is known to be present and available is more likely to be received promptly than a conventional message. For example, often times, conventional telephone calls are forwarded to a person's voicemail and are never returned.
Instant messaging (IM) is one communication medium that employs presence and availability technology. An instant messaging network recognizes when a user is “present” on the network. Accordingly, the network sends notification to other users (usually members of a “buddy list” or “contact list”) that are also logged on the network that the user is “present.” Further, instant messaging lets a user display custom status messages to his “buddies” online about the user's “availability.” For example, a user can specify his availability status as being “busy, not taking messages.” Therefore another user on the “buddy list” that is connected to the instant messaging network will be notified that although the user is present on the network, he is not available for receiving messages. Presence and availability information is most useful when an individual shares his or her online status with a trusted group of users. A communication message sent to someone who is readily present and available is less obtrusive, when the addressee has made himself or herself available to the communication.
An example of a traditional “closed” instant messaging (IM) architecture is shown in FIG. 1. The traditional IM architecture consists of a central IM server 105 connected to a number of individual clients (110, 115, 120, 125, 130, and 145) in a closed network. To send an instant message, from client 110 to client 145, IM client 110 first connects with an IM server 105 using a proprietary protocol. For example, AOL® and Yahoo!® use ICQ. Once the IM client 110 is connected to the IM server 105, the user logs on by entering a user name and password. The IM client 110 then sends the IM server 105 the connection information, such as the IP address and the number of the port assigned to the IM client and the name and IP address of everyone in the IM contact list associated with the IM client 110.
The IM server 105 then creates a temporary file that contains the connection information for the IM client 110 and for each IM client 115, 120, 145. Once the temporary files have been created, the IM server 105 checks the network to determine whether any IM client identified by the contact list associated with IM client 110 is currently logged into the system. If the IM server 105 finds any of the contacts logged onto the network, the IM server 105 sends a message back to the IM client 110 with the connection information for each IM client 115, 120, 145 currently logged onto the network. When the IM client 110 receives the connection information, the status of that particular IM client 115, 120, 145 is updated to “Online,” which is displayed to the user. At this point the user may select any IM client 115, 120, 145 that is registered “Online,” at which point a dialog box will appear in which the user may enter text. Because the IM client 110 knows the address and port number of the IM client 145, the message is sent directly to the recipient IM client 145. The IM client 145 then receives the instant message and can respond. Once the IM session is complete the dialog box is closed and the IM client 110 goes offline and sends a message to the IM server 105 terminating the session. The IM server 105, in response to acknowledging that the IM client 110 has logged off, generates a message to each of the IM clients 115, 120, 145 on the client list of IM client 110 indicating that IM client 110 is logged off the network.
An example of an “open” instant messaging architecture is Jabber, available from Jabber, Inc. of Denver, Co., which includes an IM system focusing on providing IM access to many types of users from many different locations using many devices and interoperability with IM services. Jabber includes an Extensible Markup Language (XML) open source server software that was developed by a community of developers over the Internet. Jabber allows communication among applications and systems across many platforms. Developers write additional modules to submit them back for possible incorporation into the Jabber software.
A block diagram illustrating a prior art IM network that uses Jabber interoperable XML-based network architecture is shown in FIG. 2. Jabber is a real-time communications platform based on open protocols and Extensive Markup Language (XML) and whose architecture is based on the well-known electronic mail system. Because Jabber is based on the email system, the Jabber architecture contains distributed network servers, called Jabber servers 215-217 and clients, known as Jabber clients 200-205 that receive and send messages to Jabber clients 200-205 connected to any Jabber server 215-217 on the Internet. However, unlike typical email systems, which are store and forward systems, Jabber delivers messages in real time because the Jabber server 215-217 knows when a particular Jabber client 200-205 is online.
The Jabber architecture is based on client-server architecture and not on a client-to-client architecture, as are most IM systems. Messages from Jabber client 200 to Jabber client 201 must pass through the Jabber server 215. Each Jabber client 200-205 is attached to a local Jabber server 215-217. Each local Jabber server 215-217 receives information from one Jabber client 200-205 and transfers the information to another Jabber client 200-205 along with presence information. Each local Jabber server 215-217 functions independently from one another, and can communicate with any other Jabber server 215-217 that is connected to the Internet as long as it has been identified, and predisposed to do so ahead of time. Each local Jabber server 215-217 performs two functions: listening for and communicating directly with Jabber client applications 200-205, and communicating with other Jabber servers 215-217. Each local Jabber server 215-217 consists of multiple components that separately handle individual functions with the Jabber system.
One way that a user can be notified to the online presence or availability of another user through instant messaging is to set up an auditory alert mechanism or “buddy alert.” Typically, a user via an IM client will set parameters consisting of the people that the user wants to monitor and what sound the user wants his or her instant messaging client to play when the presence or availability status of a monitored user changes. For example, a user, Dale, may want to be notified when his friend, Lee, is connected to the instant messaging network. Therefore, Dale may designate parameters in his contact list that an auditory alert should be played on Dale's instant messaging client when Lee comes online. In the parameters, Dale can also assign a unique sound to this “buddy” by associating a particular audio file to this alarm request. Accordingly, Dale could assign a particular auditory alert to be played for each “buddy” he monitors. Therefore, when Lee connects to the instant messaging network, an auditory alert will play on Dale's client to notify him of Lee's online presence.
Today's instant messaging services mostly focus on the generation of auditory alerts for a user who is monitoring presence status changes initiated by persons named in the contact list of the user. The monitoring user designates the type of auditory alert played and under what conditions, the auditory alert is played. However, this method is not flexible for the user being monitored. Thus, a heretofore unaddressed need exists in the industry to address the aforementioned deficiencies and inadequacies.